iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
1

流程控制

Go語言中流程控制有三大類:

  • 條件判斷
  • 循環控制
  • 無條件跳轉

if

  • 條件表達式不需要 ()
  • 允許宣告變數,該變數的作用域只在條件邏輯內
if 條件判斷式 {
    //若為真則執行這區塊
} else {
    //若為假則執行此區塊
}

goto

跳轉到當前函數內定義的標籤位置。
無法跨函數跳轉。

func myFunc() {
    i := 0
Here:   
    fmt.Println(i)
    i++
    goto Here   // 跳轉到Here
}

for

Go語言中沒有while和do while,所有的迴圈都必須用for來實現。

for的三大用途:

  • 遍歷array、slice和map
  • 迭代操作
  • 無限迴圈

遍歷

配合range函數取得array和slice的index與value後賦值給變數,若range函數的對象為map時,回傳值會是key、value對。

for k, v := range map {
    fmt.Println("map's key is ", k)
    fmt.Println("map's value is ", v)
}

當我們想忽略其中一個變數時,可以用下底線_來丟棄不必要的回傳值,否則對於“宣告後未使用“的變數,Go編釋時會報錯。

for _, v := range map {
    //忽略key
    //do something
}

switch

控制邏輯有多重判斷時,我們有兩種選擇,1.使用多個if、elif和else判斷,2.使用switch。

switch在使用上有一些限制:

  • case的資料類型必須一致
  • 表達式不必是常量或整數
  • case裡面不能有重複條件
switch 判斷參數 {
case :
    some instructions
case expr2:
    some other instructions
case expr3:
    some other instructions
default:
    other code
}

上一篇
Day8 資料結構 Struct
下一篇
Day 函數宣告與使用
系列文
Golang入門到進階實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言